草庐IT

c++ getline和stringstream

全部标签

c++ - 检查 string::getline 中的 eof

如何使用std::getline函数检查文件结尾?如果我使用eof()它不会发出eof信号,直到我尝试读取超出文件结尾。 最佳答案 C++中的规范阅读循环是:while(getline(cin,str)){}if(cin.bad()){//IOerror}elseif(!cin.eof()){//formaterror(notpossiblewithgetlinebutpossiblewithoperator>>)}else{//formaterror(notpossiblewithgetlinebutpossiblewithope

c++ - 检查 string::getline 中的 eof

如何使用std::getline函数检查文件结尾?如果我使用eof()它不会发出eof信号,直到我尝试读取超出文件结尾。 最佳答案 C++中的规范阅读循环是:while(getline(cin,str)){}if(cin.bad()){//IOerror}elseif(!cin.eof()){//formaterror(notpossiblewithgetlinebutpossiblewithoperator>>)}else{//formaterror(notpossiblewithgetlinebutpossiblewithope

c++ - 如何检查 StringStream 变量是否为空/null?

这里只是一个简单的问题。到目前为止,我一直在寻找无济于事。这里有更多信息:stringstreamreport_string;report_string在我的代码中,有多种条件用于为report_string变量赋值。我想检查它是否被赋值。 最佳答案 myStream.rdbuf()->in_avail()可用于获取准备从stringstream读取的可用字符数,您可以使用它检查您的stringstream是否为“空”。我假设您实际上并没有尝试检查值null。例如,如果您想从stringstream中提取int,然后查看是否有剩余字

c++ - 如何检查 StringStream 变量是否为空/null?

这里只是一个简单的问题。到目前为止,我一直在寻找无济于事。这里有更多信息:stringstreamreport_string;report_string在我的代码中,有多种条件用于为report_string变量赋值。我想检查它是否被赋值。 最佳答案 myStream.rdbuf()->in_avail()可用于获取准备从stringstream读取的可用字符数,您可以使用它检查您的stringstream是否为“空”。我假设您实际上并没有尝试检查值null。例如,如果您想从stringstream中提取int,然后查看是否有剩余字

c++ - 为什么 `std::stringstream::stringstream(std::string&&)` 不存在?

我希望stringstream有一个从string&&窃取其初始内容的构造函数。STL中通常不存在这种跨物种的“move构造函数”吗?如果没有,为什么不呢? 最佳答案 有历史,令人失望。但也是一个看起来光明的future。当move语义进入C++11时,它是巨大的、有争议的和压倒性的。我希望能够将字符串移入和stringstream.然而,当时的政治要求内部商店不必必须成为basic_string。.例如,内部存储可以是vector.并且没有使用分配器控制事物的能力。无论如何,在C++11的时间框架内就认识到了这一需求,但这只是一座

c++ - 为什么 `std::stringstream::stringstream(std::string&&)` 不存在?

我希望stringstream有一个从string&&窃取其初始内容的构造函数。STL中通常不存在这种跨物种的“move构造函数”吗?如果没有,为什么不呢? 最佳答案 有历史,令人失望。但也是一个看起来光明的future。当move语义进入C++11时,它是巨大的、有争议的和压倒性的。我希望能够将字符串移入和stringstream.然而,当时的政治要求内部商店不必必须成为basic_string。.例如,内部存储可以是vector.并且没有使用分配器控制事物的能力。无论如何,在C++11的时间框架内就认识到了这一需求,但这只是一座

c++ - 为什么 stringstream >> 在失败时更改目标值?

来自Stroustrup的TC++PL,第3版,第21.3.3节:Ifwetrytoreadintoavariablevandtheoperationfails,thevalueofvshouldbeunchanged(itisunchangedifvisoneofthetypeshandledbyistreamorostreammemberfunctions).下面的例子似乎与上面的引用相矛盾。根据上面的引用,我期望v的值保持不变——但它会归零。这种明显矛盾的行为有何解释?#include#includeintmain(){std::stringstreamss;ss>v){std:

c++ - 为什么 stringstream >> 在失败时更改目标值?

来自Stroustrup的TC++PL,第3版,第21.3.3节:Ifwetrytoreadintoavariablevandtheoperationfails,thevalueofvshouldbeunchanged(itisunchangedifvisoneofthetypeshandledbyistreamorostreammemberfunctions).下面的例子似乎与上面的引用相矛盾。根据上面的引用,我期望v的值保持不变——但它会归零。这种明显矛盾的行为有何解释?#include#includeintmain(){std::stringstreamss;ss>v){std:

c - 为什么编译 K&R2 第 1 章的最长行示例时会出现 "conflicting types for getline"错误?

这是我试图从“C编程语言”第1.9节直接运行的程序。#include#defineMAXLINE1000intgetline(charline[],intmaxline);voidcopy(charto[],charfrom[]);main(){intlen;intmax;charline[MAXLINE];charlongest[MAXLINE];max=0;while((len=getline(line,MAXLINE))>0)if(len>max){max=len;copy(longest,line);}if(max>0)printf("%s",longest);return0;

c - 为什么编译 K&R2 第 1 章的最长行示例时会出现 "conflicting types for getline"错误?

这是我试图从“C编程语言”第1.9节直接运行的程序。#include#defineMAXLINE1000intgetline(charline[],intmaxline);voidcopy(charto[],charfrom[]);main(){intlen;intmax;charline[MAXLINE];charlongest[MAXLINE];max=0;while((len=getline(line,MAXLINE))>0)if(len>max){max=len;copy(longest,line);}if(max>0)printf("%s",longest);return0;